/*
 * CDRSCSI.H Version 1.00 (C)1996 HUDSON SOFT
 * SCSI CD-ROM アクセス関数用ヘッダーファイル(CDRSCSI.H)
 */

#ifndef __CDRSCSI_H
#define __CDRSCSI_H

/* READ TOC 関連の関数で使用する構造体型の定義
 * これらの構造体は CDRSCSI.C で使用されます。
 */

/* __cdrom_info_tnum() で使用する構造体型の定義 */
typedef struct {
    unsigned char   min_track;		/* 最小トラック番号 */
    unsigned char   max_track;		/* 最大トラック番号 */
} CD_INFO_TNUM ;

/* __cdrom_info_lout() で使用する構造体型の定義 */
typedef struct {
    unsigned char   leadout_min;	/* リードアウト・分 */
    unsigned char   leadout_sec;	/* リードアウト・秒 */
    unsigned char   leadout_fra;	/* リードアウト・フレーム */
} CD_INFO_LOUT;

/* __cdrom_info_time() で使用する構造体型の定義 */
typedef struct {
    unsigned char   min;		/* 分 */
    unsigned char   sec;		/* 秒 */
    unsigned char   fra;		/* フレーム */
    unsigned char   typ;		/* タイプ */
} CD_INFO_TIME;

/* __cdrom_info_sect() で使用する構造体型の定義 */
typedef struct {
    unsigned int    sect;		/* ブロック */
    unsigned char   typ;		/* タイプ */
} CD_INFO_SECT;

/* TOC 情報のヘッダ構造の構造体型の定義 */
typedef struct {
    unsigned char   len_0;		/* 長さ上位 */
    unsigned char   len_1;		/* 長さ下位 */
    unsigned char   first_track;	/* 先頭トラック番号 */
    unsigned char   last__track;	/* 最終トラック番号 */
} CDROM_TOC_HEAD;

/* TOC 情報の本体構造の構造体型の定義 */
typedef struct {
    unsigned char   resv0;		/* 予約 */
    unsigned char   adr_control;	/* 情報アドレスとコントロールタイプ */
    unsigned char   track;		/* トラック番号 */
    unsigned char   resv1;		/* 予約 */
    unsigned char   d0;			/* ----     / ブロック最上位 */
    unsigned char   d1;			/* 分       / ブロック上位 */
    unsigned char   d2;			/* 秒       / ブロック下位 */
    unsigned char   d3;			/* フレーム / ブロック最下位 */
} CDROM_TOC_TRKD;

/* __cdrom_toc() で使用する構造体型の定義 */
typedef struct {
    CDROM_TOC_HEAD  head;		/* TOC 情報ヘッダ */
    CDROM_TOC_TRKD  data[1];		/* TOC 情報本体 */
} CDROM_TOC;

/* CDRSCSI.C 内の関数の関数プロトタイプ宣言
 */
int	cdrom_unit_ready(int);
int	cdrom_toc(int,void *,unsigned int,int,int);
int	cdrom_info_tnum(int,CD_INFO_TNUM *);
int	cdrom_info_lout(int,CD_INFO_LOUT *);
int	cdrom_info_time(int,CD_INFO_TIME *,int);
int	cdrom_info_sect(int,CD_INFO_SECT *,int);
int	cdrom_read(int,unsigned int,void *,unsigned int);
int	cdrom_eject(int);
int	cdrom_stop(int);

#endif	/* __CDRSCSI_H */
